package com.ruoyi.common.utils.excel;


import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult;
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler;
import org.springframework.stereotype.Component;

import java.lang.reflect.Field;

@Component
public class ClassExcelVerifyHandler implements IExcelVerifyHandler<Object> {
    @Override
    public ExcelVerifyHandlerResult verifyHandler(Object obj) {
        ExcelVerifyHandlerResult result = new ExcelVerifyHandlerResult(true);
        if (obj != null) {
            //判断对象属性是否全部为空
            boolean b;
            try {
                b = isAllFieldNull(obj);
                result.setSuccess(!b);
            } catch (Exception e) {
                result.setSuccess(false);
            }
        }
        return result;
    }


    //判断该对象是否: 返回ture表示所有属性为null  返回false表示不是所有属性都是null
    public static boolean isAllFieldNull(Object obj) throws Exception {
        Class stuCla = (Class) obj.getClass();// 得到类对象
        Field[] fs = stuCla.getDeclaredFields();//得到属性集合
        boolean flag = true;
        for (Field f : fs) {//遍历属性
            f.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
            Object val = f.get(obj);// 得到此属性的值
            if (val != null) {//只要有1个属性不为空,那么就不是所有的属性值都为空
                flag = false;
                break;
            }
        }
        return flag;
    }

}
